home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c-part1 / 8955 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  1.5 KB

  1. Path: anvil.ugrad.cs.ubc.ca!not-for-mail
  2. From: c2a192@ugrad.cs.ubc.ca (Kazimir Kylheku)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: argc/argv & switches
  5. Date: 6 Mar 1996 14:54:16 -0800
  6. Organization: Computer Science, University of B.C., Vancouver, B.C., Canada
  7. Message-ID: <4hl52oINNa4l@anvil.ugrad.cs.ubc.ca>
  8. References: <4h2j8j$9gn@milo.freenet.vancouver.bc.ca> <danpop.825593142@rscernix> <313E0094.167EB0E7@fore.com>
  9. NNTP-Posting-Host: anvil.ugrad.cs.ubc.ca
  10.  
  11. In article <313E0094.167EB0E7@fore.com>,
  12. Jeff Rosenfeld  <jeffro@fore.com> wrote:
  13. >Dan Pop wrote:
  14. >> Note that *++argv[0] is technically incorrect, because there is no
  15. >> guarantee that argv[0] can be modified by the program, it can be legally
  16. >> stored in a read only memory segment.
  17. >
  18. >Not so. The standard mandates that if main is defined with two
  19. >parameters (which we'll call argc and argv), then:
  20. >
  21. >    The parameters argc and argv and the strings pointed
  22. >    to by the argv array shall be modifiable by the program....
  23.  
  24. But argv[0] is not the argv parameter, but the first pointer pointed at by
  25. argv. That the strings are modifiable doesn't necessarily imply that the
  26. array of pointers through which these strings are accessed is itself
  27. modifiable.
  28.  
  29. However, if it were the case that these pointers are not modifiable, would not
  30. the declaration of main() be required to be written as:
  31.  
  32. int main(int argc, char * const *argv)
  33.  
  34.     or
  35.  
  36. int main(int argc, char * const argv[])
  37.  
  38. That is, ``argv is a pointer to a vector of constant pointers to modifiable
  39. chars''.
  40. -- 
  41.  
  42.